1. Builder 4 Databases : appmenu, menucataplikasi, menuuseraplikasi, role, rolecat.

2. Daftarkan ke dalam web.php dan di sidebar, Lalu masukkan file yang sudah di sediakan.

3. Lalu masuk ke appserviceprovider. dan masuukkan code ini di register untuk nama model sesuaikan dengan aplikasi yang dikerjaan, untuk cotoh code berikut :


// hanya bisa di akses pada sidebar view
view()->composer(['assets.sidebar'], function ($view) {

$appMenuCat = Appmenucat::orderBy('urut', 'asc')->get();

// Mengambil semua data dari Appmenu
$appMenu = Usermenu::with(['appmenunew', 'user'])
->leftJoin('appmenunew', 'usermenu.appmenunew_idappmenunew', '=', 'appmenunew.idappmenunew')
->select('usermenu.*', 'appmenunew.urut')
->where('user_iduser', Auth::user()->id ?? null)
->orderBy('appmenunew.urut', 'asc')
->get();


$view->with('appMenu', $appMenu);
$view->with('appMenuCat', $appMenuCat);

});


4.  Lalu massukkan code ini di sidebar : sesuaikan dengan nama relasi atau nama model yang sudah di buat :


{{-- Non Spatie ------------------------------------------------------------ --}}
@if(Auth::user()->level == 'superadmin')
<li class="nav-title text-dark fw-medium" style="margin-top: 7px; ">Menu Management</li>

<li class="nav-item"><a class="nav-link" href="/rolecat">
<i class="fa-regular fa-folder-open me-3"></i>Paket Menu</a>
</li>

<li class="nav-item"><a class="nav-link" href="/appmenucat">
<i class="fa-solid fa-folder-tree me-3"></i>Kategori Menu</a>
</li>

<li class="nav-item"><a class="nav-link" href="/appmenunew">
<i class="fa-regular fa-folder-closed me-3"></i>Kelola Menu</a>
</li>
@endif

@if(Auth::user()->level == 'admin' || Auth::user()->level == 'superadmin')
<li class="nav-title text-dark fw-medium" style="margin-top: 7px; ">Manage Users</li>
<li class="nav-item"><a class="nav-link" href="/users">
<i class="fa-solid fa-users-rectangle me-3"></i>Users</a>
</li>
@endif



@foreach ($appMenuCat as $items)
@php
// Cek apakah ada item menu yang sesuai dengan kategori ini
$hasMenuItems = $appMenu->filter(function($menu) use ($items) {
return $menu->appmenunew->appmenucat_idappmenucat == $items->idappmenucat;
})->isNotEmpty();
@endphp

@if ($hasMenuItems)
<li class="nav-title text-dark fw-medium" style="margin-top: 7px;">
{{ $items->appmenucat }}
</li>

{{-- Looping App Menu --}}
@foreach ($appMenu as $datas)
@if ($datas->appmenunew->appmenucat_idappmenucat == $items->idappmenucat)
<li class="nav-item">
<a class="nav-link" href="/{{ $datas->appmenunew->url }}">
<i class="fa-regular fa-folder-open me-3"></i>{{ $datas->appmenunew->appmenunew
}}
</a>
</li>
@endif
@endforeach
@endif
@endforeach


{{-- Non Spatie ------------------------------------------ --}}




5. Masuukan ini ke web.php

// Non Spatie--------------------------------------------------------------------
// Mengambil semua data dari Appmenu
$appMenu = Usermenu::with(['appmenunew', 'user'])->get();

foreach ($appMenu as $datas) {
$componentClass = 'App\\Livewire\\' . ucfirst($datas->appmenunew->url) . 'Component';

if (class_exists($componentClass)) {
Route::get($datas->appmenunew->url, $componentClass)->name($datas->appmenunew->url)->middleware('menu.access');
}
}

Route::middleware(['check.level:superadmin'])->group(function () {
Route::get('appmenunew', AppmenunewComponent::class);
Route::get('appmenucat', AppmenucatComponent::class);

Route::get('rolecat', RolecatComponent::class);
Route::get('role/{id}', RoleComponent::class);
});


Route::middleware(['check.level:admin,superadmin'])->group(function () {
Route::get('users', UsersComponent::class);
Route::get('usermenu/{id}', UsermenuComponent::class)->name('usermenu');

});


// Non Spatie ---------------------------------------------------------------------

6. Lalu masuk kedalam user dan tambahkan level pada model, component dan blade , dan berikut untuk modal blade nya :



7. Selanjutnya cari button detail di user dan ubah url nya ke :


  <a class="btn btn-sm text-white bg-success"
                                                href="/usermenu/{{ $datas->id }}"><i class="fa-solid fa-wrench"></i></a>


8. Lalu tambahkan ini di web.php



9.  Lalu copy file usermenuComponent dan usermenu blade, dan ubah sesuai dengan aplikasi yang di kerjakan.

10. lalu daftarkan atau buat midleware dengan  file yang sudah di sediakan dan masuukkan ke http > midleware .

11. sleanjutnya setalh di paste ke middleware masuk ke kernel.php dan pastekan code ini dibawah sendiri :


12.  lalu masuk ke dalam menuAccessMidleware dan sesuaikan dengan apliaksi masing -masing,

13. dan jangan lupa tambahkan hasMany pada user yang mengacu pada usermenu


public function usermenu()
{
return $this->hasMany(Usermenu::class, 'user_iduser');
}